JavaFXでテキストを出力する方法を見ていく。テキスト出力にはTextクラスを利用する。Textクラスを利用すると、単に文字を出力するだけでなく以下のようなことも可能である。
- フォントサイズ、ボールド、イタリック、下線、文字寄せ等が指定可能
- インストール済みフォントの出力
- フォントファイル(TrueType (.ttf)など)の出力
- 袋文字の出力
- 自動改行(折り返し)機能
また、『
JavaFX 画像エフェクト』で記述した各種エフェクトについても、もちろん適用可能である。
■ よく使うフォント一覧(Windows)
フォント名の一覧は、Font.getFamilies関数で取得できる。フォント指定は文字列で行うが、指定に使うフォント名は日本語でないものが大半である。よく使うフォント名は以下のようになっている。
フォント名 |
内容 |
Meiryo
Meiryo UI
|
メイリオ |
MS Gothic
MS UI Gothic
MS PGothic
|
MSゴシック |
MS Mincho
MS PMincho
|
MS明朝 |
Times New Roman |
タイムズ・ニュー・ロマン |
■ サンプルコード
Textクラスを利用するサンプルコードを以下に出力する。
◇サンプルコード
package application_fx;
import java.io.File;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;
public class TestFont extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception
{
// シーングラフの作成
VBox root = new VBox( 10.0f );
// ボールド、イタリック、下線、文字寄せ
Text t = new Text( "ボールド、ITALIC、下線、文字寄せ" );
t.setFont( Font.font( "Meiryo UI" , FontWeight.BOLD , FontPosture.ITALIC , 35 ) );
t.setTextAlignment( TextAlignment.CENTER );
t.setWrappingWidth( 700.0 );
t.setUnderline( true );
root.getChildren().add( t );
// フォントの設定(インストール済みフォント)
Text t1 = new Text("インストール済みフォントの読込");
t1.setFont( Font.font( "MS Mincho" , 45 ) );
root.getChildren().add( t1 );
// フォントの設定(フォントファイルの読み込み)
Text t2 = new Text("フォントファイルからの読込");
t2.setFont( Font.loadFont( new File( "font/chogokubosogothic_5.ttf" ).toURI().toString() , 50 ) );
root.getChildren().add( t2 );
// 袋文字
Text t3 = new Text("袋文字で出力");
t3.setFont( Font.font( null , 75 ) );
t3.setFill( Color.ALICEBLUE );
t3.setStroke( Color.CORNFLOWERBLUE );
root.getChildren().add( t3 );
// テキスト表示幅を指定することで
// 自動改行(折り返し)をさせる
Text t4 = new Text( 300.0, 450.0, "自動折り返しです。『\\n』で明示的に改行\nもできます。" );
t4.setFont( Font.font( "Meiryo UI" , 20 ) );
t4.setWrappingWidth( 200.0 );
root.getChildren().add( t4 );
// シーン作成
Scene scene = new Scene( root , 750 , 400 , Color.web( "9FCC7F" ) );
// ステージ設定
primaryStage.setTitle("Test Font");
primaryStage.setScene(scene);
primaryStage.show();
}
}
◇利用リソース
フォント:chogokubosogothic_5.ttf(提供元:
Line Font)
◇実行結果
◇解説
- ボールドなど文字効果の指定はFont.font関数で行う(30行目)。また、文字寄せについては、文字列の表示幅を指定した上で文字寄せ方向を指定する(31行目~32行目)。下線はText.setUnderline関数を利用することにより設定する(33行目)。
- フォントの設定については、インストール済みフォントを利用する場合はFont.font関数を、ファイルから読み込む場合はFont.loadFont関数を利用する(36行目~44行目)。
- 文字シェイプの外枠を設定すると袋文字が表現できる(46行目~51行目)。
- 自動改行(折り返し)については、Text.setWrappingWidth関数でテキスト表示幅を設定することで、幅以上の文字列を自動で改行する(53行目~58行目)。
■ 参照
- JavaFXアプリケーション内のテキストの使用
- JavaDoc - クラスText
- JavaDoc - クラスFont